約 2,885,798 件
https://w.atwiki.jp/fragile-love/pages/15.html
病院内デート 男「なあ」 ツン「なんだ?」 男「俺の事好きか?」 ツン「な、なんでそんな事いわせんねよ!?………好きだよ…好きだからなにか?」 男「素直じゃねぇな…ま、そこがすきなんだがな」 ツン「な、なんなねよ!(////////)」 男「また顔赤いぜwww ま、だから…今日デートしないか?」 ツン「デート?な、なんであんたなんかと!…す、するとしても外いけないのよ」 男「だから病院内でデートすんだよ」 ツン「病院内?」 ツン「病院内?」 男「そう。それなら問題ないだろ」 ツン「だろ?って…まぁ暇だし付き合ってあげてもいいわよ」 男「ありがとよ。なら準備とかあるだろうから、俺廊下でまってるよ」 ツン「分かった」 5分後 ツン「おまたせ」 男「おぉw かなりおめかししたな。」 女「だってデートすんでしょ?それくらいわかりなさいよ!」 男「はいはい、なら行こうか」 ツン「ちょっと待ちなさいよ!」 男「ん?」 ツン、手を出す ツン「で、デートだって言ってるでしょ!…手ぐらい繋げないの?!しょうがないから繋いであげる!」(ぶっきらぼうに) 男「あ、わりぃな。デートなんだもんな」 ギュッ (僕らは2時間ほどこの大きい病院を回った。) 男「あ!あの部屋なんだっけ?…」 女「I…なんとかなんだよね…」 男「ICPOじゃない?」 ツン「う、うん!多分それ!」 (こんな馬鹿みたいな会話しながら、僕らは楽しいデートをすごした。手をずっとにぎったまま… 屋上) 男「なんかいろいろあったよね~」 ツン「私はいつも見てるからなにもかんじなかった。」 男「そっか…ごm」ツン「でも!」 男「ビクッ」 ツン「男と回れて楽しかった…//////」 男「…俺も楽しかった」 ツン「…恥ずかしいじゃない!馬鹿!/////」 男「だなw」 僕らは顔を見つめあい、お互い引き合うようにキスをした… ツン「………」 男「キスしちゃったね」 ツン「………」 男「ツン?」 ツン「グスン…」 男「泣いてるか?…わ、わりぃ」 ツン、首を横にふる 男「え?」 ツン「…………たい」 男「ん?」 ツン「まだ生きたいよぉ!」 男「ツン…」 ツンは男の胸に頭をうずめた ツン「まだ男と居たいよ!こんな幸せをくずしたくないよ!」 男「俺もだよ…」 ツン「なんで?!なんでなのよ!!!うぁぁああん…」 (ツンは男の胸で泣いた。一生分はないたろう…) ツン「なんで…なんで…」 男「ツン…あのさ」 男「ツン…あのさ」 ツン「………」 男「俺たちは今を精一杯生きてるんだ。この幸せはずっとつづく。生きている以上、この幸せはずっと続くんだよ。だからこの幸せを壊さないためにも、今だけを考えよ。未来なんかみなくていい。今が幸せならいいじゃないか」 (男はツンの髪を撫でながら言った 男「もし、辛くなったら俺を呼んでよ。こんな風にして癒してあげるから。コレは俺しかできないことなんだよ」 ツン「………グスン」 男「確かに死からは逃れられないかもしれない。でも、いずれかは死ぬんだ。俺もそう。あとちょっとで………。それまでずっと、いや、生きてるこの先俺を好きでいてくれ!それが今の生きる意味だよ」 (男は半分泣いていた。自分でも分かっていたんだ (自分でもわかっていたんだ… ツン「……男」 男「…ん?」 ツン「私は…ヒック…この先ずっと…」 男「うん…」 ツン「……………す」 男「?」 ツン「好きでいてやる!感謝しなさいよ」 彼女は顔をぬぐい、満面の笑みで言った 男「素直じゃないなw」 ツン「う、うるさい!」 ふたりは笑った、そしてまた二人は唇をかさねた。最後かもしれないデートの終止符をうった 完 感想、コメントが作家を育てます。 支障なければほんの一文でも感想を残していただければ幸いです。 名前 コメント
https://w.atwiki.jp/snunlimited/pages/66.html
ぶどう酒貯蔵室。
https://w.atwiki.jp/geck/pages/15.html
原文 Overview The literal foundation of any level is layout. Layout is the most fundamental way we create flow within a gameplay space. Fallout 3 s layouts are primarily built with kits, a set of interlocking pieces of art that can be snapped together to build a seamless environment. This tutorial will introduce you to layout with the Vault kit. While every kit is unique, they all share the same basic naming conventions and functionality, which this tutorial will help you learn. 新しいCellの作成 Several videos are available at The Bethesda Game Studios YouTube page. Everything you need to know will be taught without them, and you may remain on this site. However; you may find them useful, particularly if you re struggling with any concepts that are better illustrated visually. Layout Video Tutorial (part 1) at YouTube 既存Cellの複製とリネーム 最初にすべきことは、新しいInteriors(内部・室内)のCellを作成することです。 新しいCellを作る最良の方法は、既存のものを複製することです。 これを行うには、「Cell_View_Window」の"World Space"のドロップダウンリストから"Interiors"を選択します。 今はCellのリストで「Vault108a」を見つけます。 このCellを複製するには、それを右クリックし、「Duplicate Cell」を選択します。 Locating interior cell Vault108a to duplicate Duplicating Vault108a w/right-click menu Cellを複製する場合、それはあなたが作りたいCellと同じテーマとキットを持っているものを選択するのが最善です。 あなたがCellを複製するとき、そのAmbient Ligh(周囲光)、Fog(霧)、そしてImageSpaceの設定も複製されて便利です。 新しく複製されたCellは、元の下に作られます。「Vault108aCOPY0000」のEditorIDを持っていることに注意してください。 今すぐEditorIDを変更してみましょう。 EditorIDを変更するには、Cellを選択して「F2」を押すか、すでに強調表示されたCellの1つをもう一度クリックします。 これでEditorID名を変更することが出来ます。 「Vault74a」に変更してください。 Preparing to rename Cell w/Correct naming CellのEditorIDを変更したので、ゲーム内で表示される名前も変更しましょう。 Nameはゲーム内で、MAP名または扉を見た際に表示される、ゲーム内での表示名です。 NameはSave画面、ロード画面でも表示されます。 Nameを編集するには、「Vault74a」Cellを右クリックし、「Edit」を選択します。 すると「Cell」ウィンドウが開きます。「Cell」ウィンドウは、メニューバーのWorld>Cellsからも開くことが出来ます。 「Cell」ウィンドウ内の、「Interior Data」タブをクリックし、Nameの欄に表示されている「Vault 108 - Entrance」を「Vault 74」に書き換え、「OK」ボタンを押してください。 Accessing Cell Properties with the right-click menu Changing the In-Game Cell Name Cellの内容を削除する 新しいCellを使用する前に、Cell内の不要な内容を削除する必要があります。 Cellウィンドウで「Vault 74」のCellが選択されている状態で、右のObjectリストの一番上をクリックし、 キーボードのShiftキーを押しながらEndキーを押すか、Objectリストの一番下までスクロールしてShiftキーを押しながらクリックしてください。すると全てのObjectを選択することが出来るでしょう。 Objectを削除するには、選択強調されたObjectのうち、1つを右クリックして「Delete」を選択するか、キーボードの「Delete」キーを押してください。 「Confirm Are you sure you want to delete the selected objects?」(確認:選択したobjectを削除してもよろしいですか?)と確認するメッセージウィンドウが開くので、「OK」を押して削除してください。 別のCellがRender windowに表示されている状態で、Cell Viewウィンドーの中でCallを選択・強調することが出来ます。 間違ったCallから偶然にObjectを削除することが無いように、 Render windowの一番上のテキスト・バーに「Vault74a」と表示されている事を確認してください。 NavMeshを以外が削除されています。 NavMeshを削除するには、「Vault 74」がロードされた状態で、メニューバーのNavmesh>Remove Cell Navmeshesと選択すると削除されます。 ObjectsリストにNavMeshに残らないように、リストを空にしましょう。 Cellの内容とNavMeshは、他のCellをロードして元のCellに戻るまで、Objectの表示が残る場合があります。 NavMesheとは? NPCが歩くことができる実際のエリアを表わします。詳しくはNavMesheの項目に記載。 Deleting Selected Objects from the Cell View List Removing Cell Navmeshes from the Main Toolbar Kit Piecesの使い方と、Render windowの操作 作ったCellで最初にしたいことは、いくつかのKit Pieceを使うことです。 今回は「Vault Ruined」のkit piecesを使用します。 いくつかのkit piecesを使用して、piecesの使用方法を学びます。 使用するkit piecesは「Vault Ruined」内の「Hall Small」のpiecesです。 これらのpiecesは「Object Window」ツリーを「World Objects>Static>Dungeons>VaultRuined>HallSmall」と操作します。 The Object Window w/Ruined Vault Small Hallways グリッドと角度のスナップ いくつかのpiecesを使用する前に、エディターで最も重要なボタンを覚えます。 「Snap to Grid:グリッドスナップ」ボタンです(格子に赤丸のアイコン)。 このボタンは、グリッドスナップのOn/OFFを切り替えます。 グリッドスナップはCell内のobjectを移動させる際に、256の間隔で移動するように出来できます。 スナップの間隔は256、128、64、指定値と設定できます。 グリッドは使用しているpiecesに応じて、スナップセッティングを変更すると良いでしょう。 グリッドスナップのショートカットは「Q」です。 (ショートカットはRender windowを選択している状態でしか使用できません) グリッドの設定はRender windowを右クリックし、「Render Window Properties」から行うことが出来ます。 Render Window Propertiesを開き、「Movement」タブの「Snap To Grid」の項目がグリッドスナップの数値です。 チュートリアルでは128に設定しておくと素晴らしいに違いありません。 使用するpiecesに適切なグリッドスナップを見つけると良いでしょう。 GECKは、どちらのメトリックあるいは米国でない所有者のユニット・システムを使用します。 このユニット・システムは、8のユニットに綺麗に合います。 折ることに対処する場合、よい経験則は利用可能な最大のスナップ・セッティングに取り組むことです。 ほとんどのFallout 3のキットは128ユニットのスナップ・セッティングで綺麗に使用可能です。 ユニットの大きさを意識するにあたって丁度良いのが、プレイヤーの身長で、128ユニットです。もしくは約6フィートです。 次に重要なツールは「Snap to Angle:角度スナップ」ボタンです。 このボタンはobjectを回転させる際に、一定間隔で回転するように出来ます。 回転させる角度は、15、45、指定した角度に設定することが出来ます。 角度スナップのショートカットは「Ctrl+Q」です。 (ショートカットはRender windowを選択している状態でしか使用できません) 今回のチュートリアルでは45に設定しておきましょう。 GECKは0-360の間で角度を測ります。 角度スナップ・セッティングも好きな値を入力することができますが、 レベルジオメトリ(グラフィックや判定)の隙間を回避するため、kit piecesを置く場合は、 90未満のスナップセッティングを使用することは勧められません。 スナップを使用した操作は重要です。これは誇張ではありません。 特に初期段階でのいい加減な配置や、ポリゴンの重なりはレベルジオメトリの無数の問題になってしまいます。 これらの問題はデバッグでバグ取りする際に特に苛立たしくなります。 ですから、今は綺麗なレイアウトを意識して、後で頭を抱えることが無いようにしましょう。 G.E.C.K.では、ほとんのショートカットキーを使用するために、「Render Window」が選択されていなければいけません。 「Render Window」のトップをクリックするかあなたのマウスでその内部を一度クリックすると選択状態となります。 これは「Ctrl+S」のセーブ・ショートカットも含んでいます。 ホットキー・クイック・リファレンス 「Snap to Grid」「Q」 「Snap to Angle」「Ctrl-Q」 3Dカメラの使い方 まず、「Snap to Grid」と「Snap to Angle」がオンになっているか確かめてください。 次にObjectリストからのRender windowに「VHallSm1WayR01」のpieceをD Dで持ち込みます。 Render windowに「VHallSm1WayR01」が表示され、Cell Viewに「VHallSm1WayR01」が追加されます。 Render windowにObjectが表示されているので、私たちは、カメラに加えて、それを動かすことを学ぶことができます。 さらに、ツールバーの「電球アイコン」を押すか、キーボードの「A」を押すことにより、ライトが点灯するか確かめてください。 GECKの中のデータに関する簡潔な注釈 たった今、「ベース・オブジェクト」の「VHallSm1WayR01」から「リファレンス」を作成しました。 「ベース・オブジェクト」と「リファレンス」の差は、MODを理解するために必須の重要な区別です。 私たちがベース・オブジェクトを修正すると、そのオブジェクトの「リファレンス」全てに影響されるでしょう。 現在ロードした「Reference objects:リファレンス・オブジェクト」がCell_View_Windowにおいて見える間、 「ベース・オブジェクト」はObject_Windowにリストされます。 カメラズーム。マウスの「スクロールホイール」か、「V」を押しながらマウスの前進/後退。 「V」は滑らかなズームで、スクロールは大きく動きます。 カメラ回転。「Shift」を押しながらマウスの移動です。 現在選択しているオブジェクトを中心い回転します。 選択していない場合はその場で回転します。 カメラパン(移動)。「スペースキー」もしくは、マウスの「中クリック」を押しながらマウスの移動です。 上下左右に移動が出来ます。 カメラの操作が早すぎるか遅すぎる場合、速度を調整する子度が出来ます。 Render Window内でマウスカーソルが選択可能なオブジェクトの上にないときに、 右クリックから「Render Window Properties」を開きます。 「Movement」タブを選んで、「Camera Movement」の項目をあなたの好きなようにセットしてください。 今後、作業内容によってはカメラの調整をしたいときがあるかもしれないので、 どこを見てセッティングするか覚えておきましょう GECKには実験の飛行カメラがあります。 飛行カメラを使用するには、「~」を押してください。 WASDキーは移動に使用することができ、マウスの移動は主観視点からのカメラ視点をコントロールするでしょう。 この視界は方向感覚を喪失させることができます。 正常なカメラ制御にいつでも返るために単に「~」を押してください。 Accessing Render Window Properties via right-click The Movement Preferences Tab 「Preferences」はメニューからFile>Preferencesと選択するか、 ツールバーの「紙を指さすアイコン」(保存の右隣)を押すと「PrPreferences windowを表示することが出来ます。 ホットキー・クイック・リファレンス 「電球アイコン」「ライト On/Off」「A」 カメラズーム「V」 カメラ回転「Shift」 カメラパン「Space」 飛行カメラ「~」 Hallway(玄関)の作成 Layout Video Tutorial (part 2) at YouTube 今Render windowにオブジェクト「VHallSm1WayR01」が有るので、Cellの操作方法を知るために玄関を作ります。 最初にRender windowのオブジェクトを選択して、キーボードの「T」を押してください。 これは、選択されたオブジェクトを上から見下ろす視点になります。 マウスカーソルがオブジェクトの上にある間、右クリックをドラッグすると、オブジェクトを回転させることが出来ます。 さて(「Snap to Angle」で)pieceを90度、回転させてください。 The object should now face left to right, as pictured below. デフォルトでは、選択しているオブジェクトを「T」で中央に表示させた場合、スクリーンの上部が北になります。 the statics headingの下で見つかった特別なNorthMarkerオブジェクトでこれを無視することは可能です。 新しいホール・セクションを選択したまま、それを複写するために「Ctrl+D」を押してください。 これは、選択されたオブジェクト(複数可)の正確なクローンを作ります。 新しいオブジェクトを作成したときは、オブジェクトが重なっている事を最初に理解しなければいけません。 オブジェクト・リストの中を見れば、2つの「VHallSm1WayR01」のhallway piecesに気づくでしょう。 新しく作られたhallway pieceを選択して、現在のpieceの左側にドラッグで移動させます。 「Snap to Grid」がONになっているか確かめてください。これは正確な移動を保証するでしょう。 snapped piecesがどのように見えなければならないか確かめるために、二枚目の画像で確認してください。 Elder Scrolls CSからの、オブジェクトを複写する場合の小さく便利な変更 デフォルトで新しいオブジェクトが選択され、オリジナルのオブジェクトは選択されません。 スクリプトあるいはクエストの中で頻繁に使用されるリファレンスを複写する場合、細かいながらも重要な点です。 ちょうど私たちが加えたpieceの左側に新しくcorner piece(角ピース)を加えましょう。 Do this just like before. pieceを選択して、「Ctrl+D」を押して複製し、新しいオブジェクトをドラッグで前のpieceの上から動かします。 下の画像のように、あなたに連続した3つのhallway piecesを作るでしょう。 VHallSm1WayR01 Duplicate and Snap a second section The Three Snapped Hallway pieces 一番左のpieceを選択し、「Ctrl+F」を押します。すると「Search Replace 検索 交換」ウィンドウが表示されます。 「Replace with 交換する」のドロップダウンリストから「VHallSm2WayR01」を選択し「OK」押します。 これは選択されたhallway pieceをcorner pieceに取り替えるでしょう。 それが面するように、さて角部分を回転させてください。 オブジェクトを右クリックでドラッグすると回転出来ることを思い出してください。 さらに、「Snap to Angle」がオンであることを確かめてください。 あなたのCellは今、下の画像のように見えるべきです。 The Search Replace Dialog Locating our desired replacement ID Our hallway w/the now-swapped third piece 今は、このキットの命名規則に関して学習するのによい時間です。 私たちが加えた最初のhallway pieceを分析します、 VHallSm1WayR01 Naming Abbrev. Meaning V Vault Hall Hall Sm Small 1way Straight Section R Rusted Versio 0 First Variation corner pieceの名称は「VHallSm2WayR01」です。 ただ一つの違いは「2way」です。 これは、これが基礎的なcorner pieceであることを示します。 T字路・交差点はそれぞれ「3way」および「4way」になるでしょう。 あなたが他の利用可能なキットの命名規則を学習するまで、Object Windowからpiecesを手動で持ち込んで、 開いたPreview Windowで確認することは有用です。 ここで記述されたワークフローは、その速度と効率のためにBethesdaでレベル・デザイナーによって好まれますが、 キットとそれらの命名規則についての強い熟知を要求します。 ちょうど角の向こうでMAPの玄関部分を終了しましょう。 私たちが別のMAPから玄関へ移動することが出来るように、ここにdoorwayのpiecesを置き、玄関部分を終了させましょう。 私たちは他の部分を作ったときと同じ方法を使いましょう。 corner pieceを「Ctrl+D」で複製し、corner pieceの開いている口に新しいpieceを移動させてください。 「Ctrl+F」を使用して、複製したpieceを「VHallSmEndExSmR01」に取り替えてください。 あなたの画面と下の画像を比較して同じかどうか確認してください。 今、廊下の開放口に階段を追加できます。 以前と同様に、既存のpieceを選択し、「Ctrl+D」で複製します。 新しいpieceを選択した状態で、「Ctrl+F」を押し、現在のpieceから"VHallSmStairsR01"に交換してください。 廊下の開放口に階段を移動し、下の画像と同じ作業か確認してください。 ほとんどのキットのスナップとタイルは垂直のZ軸上だけでなく、XY軸でも有効です。 これは、切り取りをせずに重なったエリアを作成することができます。 今、私たちは階段の上部にcorner pieceを追加します。 階段を複製して移動させても、階段が重なる可能性があります。 そこで、既存のcorner piece使用します。 corner pieceの「VHallSm2WayR01」を「Ctrl+D」で複製し、階段の横に移動させます。 さて、ここでcorner pieceを階段の上部に移動させなければいけません。 キーボードの「Z」を押しながらオブジェクトを移動させます。 「Z」が押されている間は、上下のZ軸移動が出来ます。 「Z」、「X」、または「Y」を押している間は、オブジェクトを移動または回転する軸をロックすることができます。 GECKはオブジェクトを選択時に「C」を押すことにより、事前に設定された様々な角度の視点を順番に切り替える事ができ、 「0(ゼロ)」押すと正射投影ビュー(パースペクティブ)の切り替えが出来ます。 正射投影ビューに切り替え、作品が正しくスナップされていることを確認するために視点を順番に切り替えて、 隙間が発生していないことを確認してください。 この解放された通路を他と同様に閉じます。 既存の「VHallSmEndExSmR01」pieceをを複製し、このcorner pieceに移動します。 この位置にオブジェクトを移動するには、「Z」を使用することを忘れないでください。 あなたのCellは今、下の画像のように見えるべきです。 Ending the hall at a doorway Adding a staircase Our completed Hallway それらの出入口をドアで塞ぐことにより、この廊下を閉じることが出来ます。 これを行うには2つの方法があります。 1つはObject Windowを操作することです。 我々が利用するドアは、World Objects Door Dungeons VaultRuined VDoorSlidingRR001の下にあります。 上記の手法では、どのpiecesが利用可能であるかを知る前に、始めるのに良い場所です。 我々が議論しようとしている2つ目の方法では、あなたが探しているオブジェクトの命名規則に多少慣れていて、 およびオブジェクトの種類を問わないと仮定しています。 第二の方法は、GECKの新しい2つの機能を使用することになります。 これらは、「Object Window」の「Filter」テキストボックスと「*All」のカテゴリです。 フィルタリングは、探しているオブジェクトのアイデアを持っているときに、簡単に特定のオブジェクトを見つけることができます。まず、我々はゲーム内のオブジェクトのすべてを見ていることを確認してみましょう。 それは次のようになります、全てのツリーを開くか、下部の「*All」を選択するかです。 GECKのフィルタウィンドウは*のワイルドカードが使用できます。 このワイルドカードを使用すると、*(アスタリスク)の部分の文字は気にしないと、フィルタに指示します。 例えば、「ghoul」と入力したとします。するとObject Windowには「ghoul」検索結果が大量に表示されます。 私は「ghoul」の前に「FER」が付くIDを探しています。この場合「fer*ghoul」と入力すると絞り込み検索が出来ます。 今、「All」と選択し、「vdoorsliding」と絞り込ます。 「VDoorSlidingRR001」は今探しているオブジェクトです。 我々は「Vault74」のドアを持っていないので、今のところはこれで代用する必要があります。 Fallout 3にでは非常に多くのオブジェクトが存在するため、フィルタフィールドが空白の場合、 「*All」のカテゴリでは、ロードするのに時間がかかります。 あなたのCellに「VDoorSlidingRR001」ドアをドラッグします。 ドアはドアフレームのどちらかに移動させます。 移動したら、ドアを複製して他のドアフレームに移動させます。 あなたのCellは現在、下の3番目の画像のように見えるはずです。 The *All Category in the Object Window Using Filter to narrow the Objects listed Our hallway with Doors placed このチュートリアルの残りの部分は、主に作品のレイアウトを示す画像になります。 そこに私は物事の仕組みをいくつか説明していますが、ほとんどは写真を基にした内容にする予定です。 あなたが望むなら、独自にレイアウトの変更をすることが出来ますが、この後のチュートリアルの残りの部分は、 この1つのレイアウトから基づいて作成されていることを覚えておいてください。 Cellの残りをレイアウト Hotkey Quick Reference Function Hotkey Toolbar Button Snap to Grid "Q" Snap to Angle "Ctrl-Q" Toggle Lights "A" Duplicate Object "Ctrl-D" Find/Replace Object "Ctrl-F" Top View "T" このレイアウトの残りの部分を掘り下げてみましょう。 以下の画像を使えば、強調表示されたエリアを構築することが出来るでしょう。 すべてのpiecesに名前が付けられていることに留意してください。 あなたが学習した内容を使用するれば、表示された名前に基づいてそれらのpiecesを見つけることができるでしょう。 より大きなエリアを構築する際は、一度に複数のkit piecesを選択すれば、複製や回転が便利になります。 複数のpiecesを追加選択するには、Ctrlキーを押しながらクリックしたり、ドラッグすると出来ます。 改めてkit piecesの命名規則を思い出しましょう。 ここでは、Vault kitsで使用されているいくつかの命名規則の例を示します。 Naming Abbrev. Meaning V Vault U Utility Rm Room Hall Hall Sm Small Wall Wall section (room) Mid Floor Section (room) 2way Corner Section R Rusted Version 01 First Variation あなたのCellがどのように見えるのか確認したい場合は、シーンに一時的にライトを加えれば良いでしょう。 Object WindowでWorld Objects>Light>TempLight01と開くとライトを見つけることが出来ます。 このチュートリアルシリーズで我々は、この後の照明チュートリアルで、より多くの照明を取り上げます。 The Cave Entrance and Utility portions of Vault 74. あなたが試行錯誤したくない場合の何もないドアの接続は、VURmWallExSmR01です、 VURmBoothWallWindowR01はブースの壁でうまく機能し、階段はVURmSunkenStairsR01です。 また、Vaultの扉を整列させる場合はグリッドスナップを64に設定してください。洞窟のドアの場合は32を使用してください。 The Galley and Room portions of Vault 74. galley piecesは、galleyの中央を走るタイルで構成されています。 外側のpieces、1階と2階の両方には、あなたがvaultの部屋を作成するために使用したのと同じpiecesで構成されています。 時々接続したい二つの部屋のグリッドがずれている場合があります。 我々は最後の部屋(監督機関の事務所)に接続されるまで、このCellでは最大256グリッドで取り組んでいました。 窓からgalleyが見渡せるように、この部屋は128グリッドです。 ここで、通常のホールピースは使用できません。 そう、我々は「Plug Piece」を使用する必要があります。 今回の場合では、「VHallSm1WayPlugR01」を使用する必要があります。 Using a plug piece to maintain grid snap Fallout 3でレイアウトをテストする 今あなたが持っているプラグインを、ゲームでテストしてみましょう。 Fallout3のランチャーを起動し、"Data Files"オプションを選択します。 ポップアップ表示されるファイルのリストにあなたのESPが表示されるはずです。 その横にあるチェックボックスをオンにし、[OK]をクリックします。 ランチャーでトラブルをが発生した場合、Fallout3のメインディレクトリに「custom.ini」というファイルを新しく作成します。 このファイルは、「Fallout_default.ini」と一致する設定を上書きします。 プラグインを強制的にロードするため、行を追加します。 STestFile2= vault74.esp custom.iniを保存して閉じます。 名前が異なる場合は、vault74.espをpluginの名前に差し替えてください。 Fallout 3/Dataのディレクトリに一致するファイル名がない場合は、何も起こらないので注意してください。 あなたがゲームをロードしたら、「~」(チルダ)を押してコンソールにアクセスします。 新しいCellにプレイヤーを移動するために、コンソールコマンド「COC Vault74a」を使用してください。 GECKは、「COCMarkerHeading」と呼ばれる特殊なオブジェクトが含まれています。 このオブジェクトはCOCコマンドを使用するときに表示するために必要になります。 これらの特殊なmarkersはCellごとに一つずつしか配置できません。 頻繁にプラグインの保存と、ゲーム内でプラグインのテストをお勧めします。 今我々が完了している基本的なレイアウトのVaultの中を乱雑に移動することができます。 名前 コメント
https://w.atwiki.jp/fragile-love/pages/51.html
外はもう茜色に染まっていた。 ツンは数刻前に泣き止み、男とともに病室に戻っていった。 ちなみに病室に戻る際、看護婦さんが人差し指と中指の間に親指をいれ、握りこぶしを男に作って見せて、男の顔が真っ赤に染まったのはツンは知らない。 気まずいようで、気恥ずかしい、そんな沈黙が病室を支配する。 気恥ずかしさに耐えきれなくなった男が沈黙を破る 男「あ、あのさ!今日雛祭りだろ?だからさ、持ってきたんだ。」 ゆっくりと、何度も失敗して、それでも病院に入院して以来、少なくとも2年以上は見てない雛人形をツンに見せるために作ってきたそれを、手渡す。 普段なら「べ、別にいらないわよ!」なんていいながら突っ返すところだが、 病室に漂う気恥ずかしさゆえか、先ほど見せた失態ゆえか、 ツン「・・・・ぁりがとぅ・・・///」 素直に感謝の言葉が出る。 もっとも男の耳に届くかどうかわからないほど小さな声ではあったが。 そして再び沈黙。 二人の視線が絡み合う。 熱に浮かされたかのように上気した頬。 ゆっくりと・・・徐々に・・・二人の距離は縮まる。 そして・・・ 看護婦「ツンちゃんにお母さんからお届け物だよ~・・ってあれ?お邪魔だった?」 瞬時に距離をとる二人。 邪魔が・・・・入った。 エピローグへ
https://w.atwiki.jp/socup/pages/100.html
UITableView/UITableViewCell インターフェース 実装 デリゲート テクニックテーブルの上に画像を入れたい indexPathの生成 デリゲートのテンプレ UITableViewの選択状態を解除したい。 カスタムセルを使いたい。 セルの複数行表示に対応した高さ調節をしたい UIScroolViewの上にUITableViewを載せるとdidSelectが呼ばれずに選択できなくなる UITableView/UITableViewCell インターフェース @interface Controller UIViewController UITableViewDelegate,UITableViewDataSource { UITableView *table; } @property (nonatomic,retain) UITableView *table; @end 実装 table = [[UITableView alloc] initWithFrame CGRectMake(0, 0, 250, 960) style UITableViewStylePlain]; table.delegate = self; table.dataSource = self; [self.view addSubview table]; デリゲート - (UITableViewCell *)tableView (UITableView *)tableView cellForRowAtIndexPath (NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle UITableViewCellStyleDefault reuseIdentifier CellIdentifier] autorelease]; } return cell; } 以下参照 http //iphone-tora.sakura.ne.jp/uitableview.html テクニック テーブルの上に画像を入れたい テーブルビューのヘッダービューにビューを設定する。 indexPathの生成 デリゲートのテンプレ #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView (UITableView *)tableView { #warning Potentially incomplete method implementation. // Return the number of sections. return 0; } - (NSInteger)tableView (UITableView *)tableView numberOfRowsInSection (NSInteger)section { #warning Incomplete method implementation. // Return the number of rows in the section. return 0; } - (UITableViewCell *)tableView (UITableView *)tableView cellForRowAtIndexPath (NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle UITableViewCellStyleDefault reuseIdentifier CellIdentifier] autorelease]; } // Configure the cell... return cell; } /* // Override to support conditional editing of the table view. - (BOOL)tableView (UITableView *)tableView canEditRowAtIndexPath (NSIndexPath *)indexPath { // Return NO if you do not want the specified item to be editable. return YES; } */ /* // Override to support editing the table view. - (void)tableView (UITableView *)tableView commitEditingStyle (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath (NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source [tableView deleteRowsAtIndexPaths [NSArray arrayWithObject indexPath] withRowAnimation UITableViewRowAnimationFade]; } else if (editingStyle == UITableViewCellEditingStyleInsert) { // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view } } */ /* // Override to support rearranging the table view. - (void)tableView (UITableView *)tableView moveRowAtIndexPath (NSIndexPath *)fromIndexPath toIndexPath (NSIndexPath *)toIndexPath { } */ /* // Override to support conditional rearranging of the table view. - (BOOL)tableView (UITableView *)tableView canMoveRowAtIndexPath (NSIndexPath *)indexPath { // Return NO if you do not want the item to be re-orderable. return YES; } */ #pragma mark - Table view delegate - (void)tableView (UITableView *)tableView didSelectRowAtIndexPath (NSIndexPath *)indexPath { // Navigation logic may go here. Create and push another view controller. /* #DetailViewController# *detailViewController = [[ #DetailViewController# alloc] initWithNibName @" #Nib name# " bundle nil]; // ... // Pass the selected object to the new view controller. [self.navigationController pushViewController detailViewController animated YES]; [detailViewController release]; */ } UITableViewの選択状態を解除したい。 [tableView deselectRowAtIndexPath indexPath animated YES]; カスタムセルを使いたい。 まずUITableViewCellを作り、以下で読み込む(参照 http //cocoadays.blogspot.com/2011/05/ios-uinib-uitableviewcell.html) UINib* nib = [UINib nibWithNibName CellIdentifier bundle nil]; NSArray* array = [nib instantiateWithOwner nil options nil]; cell = [array objectAtIndex 0]; Nibファイルは、Ownerには何も指定しない。UITableViewCellのクラスをカスタムセルにして、それとラベルなどをつなぐ。 Nibファイルの読み込みについてはリファレンス参照 セルの複数行表示に対応した高さ調節をしたい ニュアンス的に以下を実行 [cell.textLabel setNumberOfLines 0]; cell.width = self.tableView.width; CGSize size = [cell.textLabel.text sizeWithFont cell.textLabel.font constrainedToSize CGSizeMake(cell.textLabel.width, CGFLOAT_MAX)]; cell.textLabel.size = size; cell.height = cell.textLabel.height; cell.height等は対応するメソッドに置き換えること。 UIScroolViewの上にUITableViewを載せるとdidSelectが呼ばれずに選択できなくなる 【Objective-C】UITableViewのデリゲート/すてんばーい iPhone開発めも。 http //blog.livedoor.jp/clarissa22/archives/52715806.html を参照すると、どうも下にあるUIScroolViewがタッチをキャンセルしてしまうようだ。
https://w.atwiki.jp/buastbuast/pages/52.html
ピストル(E) ライフル(E) 重火器(E) ピストル(E) 武器名 DAM 拡散性 CRT倍率 CRTDAM 弾薬 装弾数 重量 価値 AP CND Skill/STR 種別 備考 レーザーピストル 12 0.1 x 1.5 12 E Cell 30 3 175 15 200 0/1 片LAS アイアンサイトなし レーザーピストル(GRA) 12 0.1 x 1.5 12 E Cell 30 3 175 15 200 0/1 片LAS 消えたレーザーピストル 11 0.1 x 1.5 11 E Cell 30 3 非売品(175) 15 200 0/1 片L アイアンサイトあり レーザーガン 75 0.1 x 2.5 50 E Cell 10 3 非売品(2498) 35 80 0/1 片LAS 1発で5弾消費 コンプライアンス・レギュレーター 8 0.1 x 1.5 12 E Cell 30 3 非売品(175) 15 200 0/1 片LAS CRTで麻痺10秒 リチャージャーピストル 18 0 x 1.2 18 MF Breeder 20 7 非売品(2700) 13 300 50/2 片A 時間経過で弾薬回復(1秒に1発回復、戦闘時は10AP事に1発回復) MFハイパーブリーダー・アルファ 25 1 x 2 25 MF Breeder 10 7 非売品(8900) 20 800 50/2 片LA 時間経過で弾薬回復(1秒に2発回復、戦闘時は10AP事に2発回復) プラズマピストル 33 0.5 x 1.5 33 E Cell 32 3 200 30 150 0/2 片PAS 1発で2弾消費 プラズマピストル(GRA) 33 0.5 x 1.5 33 E Cell 32 3 200 30 150 0/2 片PAS 1発で2弾消費 プラズマディフェンダー 38 0.3 x 1 38 E Cell 32 2 3000 20 100 50/2 片PA 1発で2弾消費 プラズマディフェンダー(GRA) 38 0.3 x 1 38 E Cell 32 2 3000 20 100 50/2 片PA 1発で2弾消費 パルスガン 5 0.1 x 1 5 E Cell 25 2 非売品(1800) 20 100 25/2 片LA 1発で5弾消費 ロボットにDT無視の追加DAM+250 パワーアーマーにDT無視の追加DAM+110 音波発生器 - 黙示録 31 0.1 x 1 18 E Cell 24 2 3500 30 100 50/2 片AS ロボット及びPAにDT無視の追加DAM+20 CRTでロボットにノックダウンや足止め効果 非ロボットの敵にCRTで麻痺効果 音波発生器 - オペラ歌手 55 0.1 x 1 25 E Cell 24 2 3500 30 100 50/2 片AS ロボット及びPAにDT無視の追加DAM+20 CRTで四肢損傷と追加DAM+20 音波発生器 - ガブリエルの吠え声 55 0.1 x 1 25 E Cell 24 2 3500 30 100 50/2 片AS 1発で2弾消費 ロボット及びPAにDT無視の追加DAM+20 CRTでノックバック効果 音波発生器 - タランチュラ 60 0.1 x 1 30 E Cell 24 2 3500 30 100 75/2 片FAS 1発で3弾消費 ロボット及びPAにDT無視の追加DAM+20 CRTで炎上ダメージ効果 音波発生器 - ロボスコルピオン 65 0.1 x 1 30 E Cell 24 2 3500 30 100 75/2 片AS 1発で3弾消費 ロボット及びPAにDT無視の追加DAM+20 CRTでExplosivesスキル依存の爆発ダメージ エイリアンブラスター 75 0 x 100 50 Alien Power Cell 10 2 非売品(4000) 20 500 75/1 片A 常時クリティカル フレアガン 10 0.5 x 1.5 10 Fuel 10 2 500 30 50 0/3 S 1発で10弾消費 HP -1(10s) アボミネーションを恐怖させる ユークリッドの射線測距計 0+150 0 0.5 x 50 0 ARCHII Charge 1 15 1 非売品(1000) 0/1 片 炎DAM +6(10s) 時間経過で弾薬回復(ゲーム内24時間経過で1発回復) 屋外にのみ使用可能 ライフル(E) 武器名 DAM 拡散性 CRT倍率 CRTDAM 弾薬 装弾数 重量 価値 AP CND Skill/STR 種別 備考 レーザーライフル 22 0.025 x 1.5 22 MF Cell 24 8 800 18 125 25/3 両L AER14(プロトタイプ) 35 0.0225 x 2 36 MF Cell 24 8.5 非売品(2200) 20 100 25/3 両L 1発で2弾消費 ヴァン・グラフのレーザーライフル 15 0.025 x 1.5 15 MF Cell 24 8 非売品(800) 18 55 0/3 両L レーザーRCW 15 0.08 x 0.5 15 EC Pack 60 4 2150 20 400 50/4 両LA フルオート LAER 65 0.08 x 1.5 15 MF Cell 20 4 8000 32 75 75/4 両L エリヤの高性能LAER 65 0.08 x 1.5 15 MF Cell 15 4 非売品(8500) 32 50 75/4 両L トライビーム・レーザーライフル 66(22x3) 0.5 x 1.5 66(22×3) MF Cell 24 9 4800 23 50 75/4 両L 1発で3弾消費 トライビーム・レーザーライフル(GRA) 66(22x3) 0.5 x 1.5 66(22×3) MF Cell 24 9 4800 23 50 75/4 両L 1発で3弾消費 プラズマライフル 47 0.2 x 2 47 MF Cell 24 8 1300 30 75 25/3 両P 1発で2弾消費 Q-35マターモジュレータ 40 0.2 x 2 62 MF Cell 12 7 非売品(3000) 28 250 25/2 両P ヴァン・グラフのプラズマライフル 32 0.2 x 2 32 MF Cell 24 8 非売品(1300) 30 75 0/3 両P 1発で2弾消費 マルチプラス・ライフル 105(35x3) 1.5 x 1 105(35×3) MF Cell 30 7 2500 35 50 50/4 両P 1発で3弾消費 リチャージャーライフル 12 0.02 x 1.5 12 MF Breeder 7 15 250 19 200 0/5 両 時間経過で弾薬回復(1秒に1発回復) ホロライフル 80 0.4 x 1 80 MF Cell 4 8 3000 30 100 50/4 両 中倍率暗視スコープ 追加DAM +15(3s) ガウスライフル 120 0.03 x 2 60 MF Cell 5 7 3000 40 80 75/5 両 1発で5弾消費 高倍率スコープ YCS/186 140 0.0275 x 2 70 MF Cell 4 8 非売品(3000) 50 100 75/5 両 1発で4弾消費 高倍率スコープ 重火器(E) インシネレーター、ヘビーインシネレーターのDAM数値は(直撃)+(爆発)での周囲へのダメージです。 武器名 DAM 拡散性 CRT倍率 CRTDAM 弾薬 装弾数 重量 価値 AP CND Skill/STR 種別 備考 インシネレーター 1+20 0.1 x 4 1 Fuel 30 12 1300 50 200 25/6 F 炎DAM +4(8s) ヘビーインシネレーター 15+20 0.5 x 4 5 Fuel 24 15 7200 50 200 100/8 F 炎DAM +8(5s) 火炎放射器 16 0.5 x 0.5 1 Fuel 60 15 2350 50 200 50/7 F 炎DAM +2(5s) クレンジング・フレイム(GRA) 15 1.5 x 1 1 Fuel 100 22 非売品(9500) 55 300 50/7 F 炎DAM +30(6s) アークウェルダー 9 0.5 x 4 1 EC Pack 30 15 3700 30 250 75/7 L ロボットにDT無視の追加DAM+8 PAにDT無視の追加DAM+4 ガトリングレーザー 10 0.6 x 1 10 EC Pack 240 18 6800 30 1500 100/8 L スプルテル・ウッド9700(GRA) 16 0.5 x 1 16 EC Pack 90 15 非売品(20000) 30 1000 100/6 L プラズマキャスター 65 0.7 x 1 65 MF Cell 10 20 7000 25 80 100/8 P スミティスペシャル(GRA) 35 1.3 x 1 35 MF Cell 20 20 非売品(20000) 30 220 100/8 P テスラキャノン 80 0.1 x 2 40 EC Pack 20 8 8700 37 80 100/8 追加DAM +20(2s) 1発で5弾消費 エリヤの応急テスラキャノン 85 0 x 1.5 45 EC Pack 30 8 非売品(13500) 37 50 100/8 追加DAM +20(2s) 1発で5弾消費 テスラビートン 90 0.08 x 2 45 EC Pack 24 8 非売品(12525) 37 40 100/8 追加DAM +25(2s) 1発で6弾消費
https://w.atwiki.jp/bc5656/pages/2489.html
VDC ーーーーー VDC (エリア⑨ VDC (悍ましいほどの爆発音を背に笑みを浮かべる VDC ・・・(敵になっちまった以上は VDC ・・・(全力で対策しなきゃア不遜ってモンだよなァ… VDC お互いによ。 VDC (通信の対策の聴力の対策の轟音爆破 VDC (決められた手順を踏んだ上で素早く位置情報の交換を行うチームメイト VDC ッハァ! 運は悪くねェなァ?(皆の位置を把握し、その偏りに次なる作戦を巡らせる VDC (鍛冶屋スコットとの位置が近い。オマケにスコットはスクラップエリアの大当たりを引き抜いている。 VDC よつばの野郎の位置も悪くねェし、スコットの場所に一旦合流して武器チームを作るプランAが実るかもしれねェなァ? VDC (そうなれば動き出しは早い。 VDC (変身HEROでもあるVDCだが、今回は最初から変身状態で試合に臨んでいる。 VDC (隻眼隻腕を機械の体で補強する VDC (永久γチームのサブリーダー、Evの”闇“担当、軍人一家の切り込み兄貴、まあ、なんでもいい。全部が己だ。 VDC 「グラウンド・ヴァイパー」ッ!! VDC (義手の肘から炎を噴射 低姿勢で街をカッ飛ばす VDC (目指すはエリア? スクラップ地帯。 VDC (スコットと合流し、スコットの鍛冶屋行動を援護する作戦 街 ―――(かっ飛ばす戦士の前方にある建造物。スクラップ置き場に繋がる…工場か? VDC ッハァ!(工場の横を通ってスクラップエリアを目指そうとする 街 (VDCの横で――巨大な爆発音! 街 (建物の中から腹を喰い破られるように、巨大な爆炎弾がVDCに向かって飛んでくる VDC ッハッハァ!!(低姿勢から一気に腕を振り上げて飛び上がり VDC 「ヴォルカニック・ヴァイパー」ッ!!(爆炎弾をVDCの機械腕で殴り抜ける 街 「――― あははっ。」(燃え盛る工場だった建物の中、響くのは可愛らしい女性の声 VDC ッハァ! 待ち伏せたァ用意周到なこった! 街 「正面から突破するとは。自信の現れでしょうか? それとも――」 街 「貴方さま「も」昂っているのかしら。 ――おにいさま?」 VDC そりゃあ嬉しい分析だなァオイ?(着地し、機械の腕を構える VDC (『Electrical Equip = Sub Arm』 イツキ まあ、待ち伏せなんて回りくどい。(炎を背景に現れる、桜柄の袴和装姿の、とても美しい女性 VDC (機械で覆われた筋肉質な豪腕。手先には鋼鉄の爪。掌には銃口。暗い銃口の周りで咲く鋭い爪の後ろには肩から手首まで装着された自立推進式ミサイル イツキ イツキはただ、待っていただけですよ。おにいさまがただ無作為に破壊工作を続けるだけとは思えませんでしたから。 イツキ あははっ。妹達への歓待でしょうか?随分と――派手な「喝采」でしたね。 VDC ッハァ! 随分と前向きな受け取り方だなァ? だがイイじゃあねェか! VDC 『Ev』の力で『VDC』として『紅椿家』を相手に取るなんざァそうはねェ機会だからなァ? VDC テメェ“も”昂るってェのも無理の無い話だ! イツキ えぇ、この様な機会は決して多くはありません。 イツキ達、仲良し兄妹ですからね。 VDC 違いねェ!(そのほんわかな言い回しを受け止める イツキ そして今、このように相見えて。舞台は整いました。これで昂らずにいられましょうか? VDC ッハァ、それで正面からやって来たてェのか? VDC (くっくっくっ…と笑って VDC テメェの器用さなら幾らでも戦況を変える“サポート”が出来そうだけどなァ? VDC 良いのか? 単なる“戦闘員”として、オレと一騎打ちなんかおっ始めてよォ? VDC (興の乗っている双子にあえて冷めるような冷静な選択肢を提示する イツキ まあ。ふふっ、おにいさま。本当は解っているのではないですか? イツキ 賢しく器用に立ち回るのも、それはそれで「全力」かつ「強い」振る舞いですけれど。 イツキ 「紅椿家」の子として――イツキはもっとも美しく勝ちたい。 VDC ハッハァ!!!(大きく口を開けて笑い イツキ 妹の可愛い我儘に、付き合ってくださいますよね?おにいさま。 VDC (紅椿家五は賢く賢しく器用で強い人間だが、 VDC (なによりも己の美学を優先する酔狂な部分もある。 VDC ッハァ…しょうがねェ奴だなァテメェは…(苦言を呈するが表情は愉しく笑っている VDC 「VDCだ。只今より紅椿家五と交戦する。」(隠す様子もなく通信を伝え イツキ あははっ!――それでこそおにいさまです。(全身が桜色の光に包まれる VDC 可愛い妹に思い知らせてやるよ! 双子の兄の「強さ」をなァ!! イツキ (EE=ライジングフォース!(それは期限付きの超強化。これを機動した以上、後には退かない VDC 夢の世界だ。墓標はいらねェ。(腕の搭載ミサイルに火花が奔る イツキ ――あははっ!おにいさまこそ。この機会に知らしめて差し上げます。 イツキ 「教えて差し上げますわ。妹より美しい兄など存在しないという事を!」(貴族チームの人間は碌な通信をしないらしい イツキ (一歩、地を踏み。――踏み込んだ一歩が音となり イツキ (桜色の雷光が、VDCに向かい突撃していく VDC (ミサイルの噴射口が爆発。地からその脚を離し、 VDC 「ヴォルカニック・チャージ」ッ!!(赤色の爆炎が、イツキへ向かい突撃していく
https://w.atwiki.jp/nag1sa/pages/16.html
https://w.atwiki.jp/emcs/pages/31.html
書式 (memq ELEMENT LIST) リストを要素で検索(eq)する。見つかったらその要素を含め以降のリストを返す。 見つからない場合はnilを返す (setq cell ("value1" "value2" "value3" "value4")) (setq cell1 cell) (memq "value10" cell) #= nil (memq "value1" cell) #= nil (memq (car cell1) cell) #= ("value1" "value2" "value3" "value4") 名前 コメント
https://w.atwiki.jp/xronia/pages/16.html
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" html lang="ja" head meta http-equiv="Content-Type" content="text/html; charset=shift_jis" title ソース解析 /title script type="text/javascript" !-- var doc = new Array(); var OpenClose = function (val) { this.openString = "("; this.closeString = ")"; this.val = val; this.matchString = ""; this.leftString = ""; this.rightString = ""; this.leftIndex = 0; this.rightIndex = 0; this.clear = function () { this.matchString = ""; this.leftString = ""; this.rightString = ""; this.leftIndex = 0; this.rightIndex = 0; } this.exec = function (val) { if(typeof(val) != "undefined") this.val = val; this.clear(); for(this.leftIndex = 0; this.leftIndex this.val.length; this.leftIndex++) { if (this.val.substr(this.leftIndex, this.openString.length)==this.openString) { this.rightIndex = this.leftIndex; var node = 1; while(node != 0) { // 括弧の終端探索 this.rightIndex++; if(this.rightIndex this.val.length) return false; if(this.val.substr(this.rightIndex, this.openString.length ) == this.openString ) node++; if(this.val.substr(this.rightIndex, this.closeString.length) == this.closeString) node--; } this.leftString = this.val.substr(0, this.leftIndex); this.matchString = this.val.substring(this.leftIndex + 1, this.rightIndex); this.rightString = this.val.substr(this.rightIndex + 1); //txtDebug.innerHTML += "left " + this.leftIndex + " BR " + this.leftString + " p "; //txtDebug.innerHTML += "match " + this.matchString + " p "; //txtDebug.innerHTML += "right " + this.rightIndex + " BR " + this.rightString + " p "; return true; } } } } function getText() { var l = new String(txtSource.value); l = l.replace(/\/\*(.*?)\*\//g, "");// コメント l = l.replace(/(\/\/.*?)$/g, "");// コメント(C++) l = l.replace(/^[\t ]*/gm, "\r"); l = l.replace(/[\t ]*$/gm, "\r");// ブランク削除 l = l.replace(/[\t ]*\\$/gm, "\\\r");// \crの前のブランクを消す l = l.replace(/\r+/g, "\r"); l = l.replace(/\\\r/g, "");// \cr を消す // インクルードを消す l = l.replace(/^#(include|undef)[^\r]*/gm, ""); //#ifマクロの後ろに"{"をつける l = l.replace(/^(#if.*)$/gm, "\r;\r$1\r{\r"); //#endifマクロを"}"に変換 l = l.replace(/^(#endif.*$)/gm, "\r;\r}\r"); //#elseマクロの前後に{}をつける l = l.replace(/^#else/gm, "\r}\r;\r\#else\r{\r"); l = l.replace(/#define(.*)$/gm, ""); //if/while/until/switch/for特化 //l = l.replace(/\r(if|while|until|switch|for|do)\s*($openclose)\s*([^\{](? |if|while|until|switch|for|do)[^\}]*)/g, //"\r$1$2{\r$3\r}\r"); //変数宣言を消す l = l.replace(/^\w+(? \s+\w+)*(? (? \s*\*)?\s+(? \*\s*)?)+[\w\[\]]+;/gm, ""); //キャストを消す //l = l.replace(/(? \*\s*)?\([\w\s\* ]*\)\s* /g, ""); //変数宣言+初期化 l = l.replace(/^\w+\s+([\w\[\]]+\s*=\s*[\w\{\}]+\s*[\w\[\]]*\s*;)/gm, "\r$1"); l = l.replace(/(? \*\s*)?\([\w\s\* ]*\)\s*([\( a-zA-Z])/g, "$1"); l = l.replace(/^\}[\t ]*([^\r])/gm, "\r}\r$1"); l = l.replace(/[\r\n]/g, ""); // 行末文字で分割 var s = new String(); var ar = l.match(/[^\ \;\{\}]*[\ \;\{\}]/g); for(i = 0; i ar.length; i++) { var n = new String(ar[i]); n = n.replace(/^\s+/gm, ""); n = n.replace(/\s+$/gm, "");// ブランク削除 n = n.replace(/^\;$/gm, "");// 先頭;の削除 if(n.length != 0) s += n; } var r = new OpenClose(); r.openString = "{"; r.closeString = "}"; var i = 0; while(r.exec(s)){ var func = new String(r.leftString); var str = new String(r.matchString); s = new String(r.rightString); //txtDebug.innerHTML += " p func="+func+" p "; //txtDebug.innerHTML += " p str="+str+" p "; //txtDebug.innerHTML += " p s="+s+" p "; var ar = func.match(/(\w+\s*)(\(.*\))/); if(!ar) continue; doc[i] = new Object(); doc[i].symbol = ar[ar.length - 2]; doc[i].func = func; doc[i].str = str; i++; } selFunction.innerText = ""; for(var i = 0; i doc.length; i++) { var e = document.createElement( option ); // value オプションにiを設定 e.setAttribute( value , i); // OPTION タグ内のテキスト設定 e.appendChild(document.createTextNode(doc[i].symbol)); // SELECT Listへ登録 selFunction.appendChild(e); } //txtDebug.innerHTML += lines.join(" BR "); //alert(l); } function getFunction() { var index = parseInt(selFunction.value); if(isNaN(index)) return; txtSS.innerHTML = ""; var dat = nest(doc[index].str); var tbl = document.createElement("table"); var tblBody = document.createElement("tbody"); var row = document.createElement("tr"); var cell = document.createElement("th"); var cellText = document.createTextNode(doc[index].func); cell.appendChild(cellText); cell.setAttribute( colspan , 2); cell.align = left ; cell.style.borderWidth = 2px ; cell.style.borderStyle = solid ; cell.style.borderColor = black ; row.appendChild(cell); tblBody.appendChild(row); viewLine(tblBody); var row = document.createElement("tr"); var cell = document.createElement("td"); cell.appendChild(padView(dat, false)); cell.setAttribute( colspan , 2); row.appendChild(cell); tblBody.appendChild(row); viewLine(tblBody); var row = document.createElement("tr"); var cell = document.createElement("th"); var cellText = document.createTextNode("END"); cell.appendChild(cellText); cell.setAttribute( colspan , 2); cell.align = left ; cell.style.borderWidth = 2px ; cell.style.borderStyle = solid ; cell.style.borderColor = black ; row.appendChild(cell); tblBody.appendChild(row); tbl.appendChild(tblBody); tbl.setAttribute( cellspacing , 0); tbl.setAttribute( cellpadding , 0); txtSS.appendChild(tbl); } // ネスト解析処理 function nest(str) { var datas = new Array(); while(1) { var r = new OpenClose(); r.openString = "{"; r.closeString = "}"; if(r.exec(str)) { str = new String(r.rightString); addMethod(r.leftString); var dat = datas.pop(); dat.obj = nest(r.matchString); datas.push(dat); } else { addMethod(str); break; } } return datas; function addMethod(str) { while(1) { var r = new OpenClose(); r.openString = "("; r.closeString = ")"; if(r.exec(str)) { addNomalMethod(r.leftString); var dat = datas.pop(); dat.pram = r.matchString; datas.push(dat); str = new String(r.rightString); } else { addNomalMethod(str); return; } } function addNomalMethod(str) { var ar = str.match(/[^\ \;\{\}]*[\ \;\{\}]/g); var s = new String(RegExp.rightContext); if(ar) { for(var i = 0; i ar.length; i++) { addMain(new String(ar[i])); } addMain(s); return; } addMain(str); return; function addMain(str) { if(str.match(/^[\;\ \{\}]?$/)) return; var dat = new Object(); dat.obj = false; dat.parm = false; dat.method = str; datas.push(dat); } } } } function padView(dat, flag) { var tbl = document.createElement("table"); var tblBody = document.createElement("tbody"); for(var i = 0; i dat.length; i++) { if(i != 0) viewLine(tblBody); var row = document.createElement("tr"); var cell = document.createElement("td"); var cellText = document.createTextNode("\u00a0"); cell.appendChild(cellText); cell.width = 10; cell.style.fontSize = 8pt ; if(i == 0 flag) { cell.style.borderTopWidth = 1px ; cell.style.borderTopStyle = solid ; cell.style.borderTopColor = black ; } row.appendChild(cell); var cell = document.createElement("td"); var cellText = document.createTextNode(dat[i].method); cell.appendChild(cellText); cell.align = left ; cell.vAlign = top ; cell.width = 100; cell.style.borderWidth = 1px ; cell.style.borderStyle = solid ; cell.style.borderColor = black ; cell.style.fontSize = 9pt ; row.appendChild(cell); if(dat[i].obj) { var cell = document.createElement("td"); cell.appendChild(padView(dat[i].obj, true)); cell.align = left ; row.appendChild(cell); } tblBody.appendChild(row); } tbl.appendChild(tblBody); tbl.setAttribute( cellspacing , 0); tbl.setAttribute( cellpadding , 0); return tbl; } function viewLine(base) { var row = document.createElement("tr"); var cell = document.createElement("td"); var cellText = document.createTextNode("\u00a0"); cell.appendChild(cellText); cell.width = 10; cell.style.fontSize = 8pt ; row.appendChild(cell); var cell = document.createElement("td"); var cellText = document.createTextNode("\u00a0"); cell.appendChild(cellText); cell.style.borderLeftWidth = 1px ; cell.style.borderLeftStyle = solid ; cell.style.borderLeftColor = black ; cell.style.fontSize = 8pt ; row.appendChild(cell); base.appendChild(row); } //-- /script /head body textarea cols=80 rows=5 id="txtSource" /textarea br input type="button" name="btnSubmit" value="解析" onClick="getText();" br select id="selFunction" /select input type="button" name="btnSubmit" value="表示" onClick="getFunction();" br br div align="left" id="txtSS" /div div align="left" id="txtDebug" /div /body /html